查看原文
其他

九维团队-紫队(优化)| 测试部署Elastic Stack进行威胁检测分析

supdon 安恒信息安全服务 2022-09-06



前  言


本文主要介绍了搭建Elastic Stack环境过程,及如何应用于模拟攻击测试用例。希望通过本文的介绍,能对各位在分析漏洞攻击特征、测试检测规则、提升威胁检测能力有一定帮助。本文内容较长,文章内容导览如下:


一、Elastic Stack简介

二、搭建 Elastic Security Siem

  2.1 安装 elasticsearch和kibana

    2.1.1 安装elasticsearch

    2.1.2 安装kibana

    2.1.3 配置elasticsearch和kibana SSL

    2.1.4 为elasticsearch添加身份验证

    2.1.5 启用kibana的fleet功能

  2.2 添加使用 Endpoint Security 集成管理终端安全事件

    2.2.1 添加Endpoint Security集成

    2.2.2 安装Endpoint Security集成策略的Elastic Agent

  2.3 添加使用 zeek集成分析网络日志

    2.3.1 安装配置zeek服务

    2.3.2 安装zeek集成策略的Elastic Agent

三、使用Elastic Security Siem进行威胁检测







一、Elastic Stack简介


Elastic Stack是一个强大的软件栈,ELK。分别由Elasticsearch、Logstash、Kibana构成,后期加入了Beats。

Elasticsearch:Elasticsearch 是搜索和分析引擎,Elasticsearch 是整个Elastic Stack 的核心组件,负责存储传输过来的日志。


Logstash:Logstash是一个服务器端数据处理管道,它同时从多个源中提取数据,进行转换,然后将其发送到Elasticsearch。

Kibana:是一款b/s架构的可视化平台,负责将Elasticsearch的数据使用图表将数据可视化展示。

Beats:Beats是一些轻量级的数据摄入器的组合,安装在agent端,用于收集和传送日志到Logstash或者Elasticsearch。


基于Elastic Stack,可以根据不同的场景实现不同需求:


二、搭建

Elastic Security Siem


搭建Elastic Stack环境,管理终端安全事件和网络入侵威胁,进行威胁检测分析。

环境部署:

192.168.12.240(ubuntu 20.04):安装elasticsearch、kiban、zeek,和zeek集成策略的agent端
192.169.12.250(windows2012):域控机器,安装edr集成策略的agent端,并配置路由转发规则到ubuntu
win7:域成员机器,安装edr集成策略的agent端,并配置路由转发规则到ubuntu

*左右滑动查看更多



2.1 安装

elasticsearch和kibana



2.1.1 安装elasticsearch


1.安装elasticsearch:

# 更新软件源
apt-get install curl apt-transport-httpscurl -s https://artifacts.elastic.co/GPG-KEY-elasticsearch | apt-key add -echo "deb https://artifacts.elastic.co/packages/7.x/apt stable main" | tee /etc/apt/sources.list.d/elastic-7.x.listapt-get update
# 安装elasticsearchapt-get install elasticsearch

*左右滑动查看更多


2.配置es数据库监听全局,修改

/etc/elasticsearch/elasticsearch.yml文件。

network.host: <ip>node.name: <node_name>cluster.initial_master_nodes: ["<node_name>"]*左右滑动查看更多


3.重启es数据库

service elasticsearch start
service elasticsearch status


es启动成功后,默认是9200端口:


2.1.2 安装kibana

1.安装kibana:

apt-get install kibana


2.配置kibana为全局,修改

/etc/kibana/kibana.yml文件。

server.host: "ip"



3.重启kibana:

systemctl restart kibana


kibana启动成功后,默认是5601端口:


2.1.3 配置elasticsearch和kibana SSL


(ps:根据官方要求使用fleet组件需要配置TLS)

1.使用elasticsearch-certutil生成elasticsearch和kibana的证书密钥对。

新建instances.yml文件,写入如下配置:

instances:- name: 'elasticsearch'ip: [ '192.168.12.240' ]- name: "kibana"ip: [ '192.168.12.240' ]
# 使用elasticsearch-certutil生成证书对/usr/share/elasticsearch/bin/elasticsearch-certutil cert ca --pem --in instances.yml --out certs.zip*左右滑动查看更多


2.配置Elasticsearch SSL

解压生成的certs.zip压缩包,把Elasticsearch和ca目录的证书文件复制到/etc/elasticsearch/certs/目录(ps:/certs/目录需要新建)


配置elasticsearch.yml文件,为Elasticsearch配置SSL:

# Transport layerxpack.security.transport.ssl.enabled: truexpack.security.transport.ssl.verification_mode: certificatexpack.security.transport.ssl.key: /etc/elasticsearch/certs/elasticsearch.keyxpack.security.transport.ssl.certificate: /etc/elasticsearch/certs/elasticsearch.crtxpack.security.transport.ssl.certificate_authorities: [ "/etc/elasticsearch/certs/ca/ca.crt" ]
# HTTP layerxpack.security.http.ssl.enabled: truexpack.security.http.ssl.verification_mode: certificatexpack.security.http.ssl.key: /etc/elasticsearch/certs/elasticsearch.keyxpack.security.http.ssl.certificate: /etc/elasticsearch/certs/elasticsearch.crtxpack.security.http.ssl.certificate_authorities: [ "/etc/elasticsearch/certs/ca/ca.crt" ]

*左右滑动查看更多


随后重启Elasticsearch服务,可以看到Elasticsearch已使用https协议进行传输:


3.配置kibana SSL
解压生成的certs.zip压缩包,把kibana和ca目录的证书文件复制到/etc/kibana/certs/目录
(ps:/certs/目录需要新建)


随后配置kibana SSL,修改

/etc/kibana/kibana.yml文件。

elasticsearch.hosts: ["https://192.168.2.200:9200"]elasticsearch.ssl.certificateAuthorities: ["/etc/kibana/certs/ca/ca.crt"]elasticsearch.ssl.certificate: "/etc/kibana/certs/kibana.crt"elasticsearch.ssl.key: "/etc/kibana/certs/kibana.key"server.ssl.enabled: trueserver.ssl.certificate: "/etc/kibana/certs/kibana.crt"server.ssl.key: "/etc/kibana/certs/kibana.key"

*左右滑动查看更多



2.1.4 为elasticsearch添加身份验证


1.修改elasticsearch的elasticsearch.yml配置文件,启用身份验证:

xpack.security.enabled: true



2.设置elasticsearch的账户密码。
为elasticsearch的4个默认用户分别设置密码,用户名分别是elastic、kibana、 logstash_system、beats_system

# 为4个用户自动设置密码/usr/share/elasticsearch/bin/elasticsearch-setup-passwords auto
# 为4个用户手动设置密码/usr/share/elasticsearch/bin/elasticsearch-setup-passwords interactive

*左右滑动查看更多


另外当忘记用户的密码时,可以重置用户密码:
例如重置elastic用户的密码:

# 1.先添加一个super权限的用户/usr/share/elasticsearch/bin/elasticsearch-users useradd temp_admin -p temp_admin_passwd -r superuser
# 2.然后使用这个用户重置elastic用户的密码curl -H "Content-Type:application/json" -XPOST -u temp_admin -p temp_admin 'http://127.0.0.1:9200/_xpack/security/user/elastic/_password' -d '{ "password" : "123456" }'

*左右滑动查看更多


3.配置kibana平台与elasticsearch数据库的连接信息:
修改kibana配置文件/etc/kibana/kibana.yml,配置kibana的es数据库连接信息。

xpack.security.enabled: trueelasticsearch.username: "kibana"elasticsearch.password: "password"

*左右滑动查看更多



设置完成后,重启elasticsearch和kibana服务,看到访问elasticsearch数据库需要进行认证,使用elastic用户登录kibana平台。

2.1.5 启用kibana的fleet功能


fleet实际上就是Ingest Manager功能,从7.13版本开始,Ingest Manager 的名字也被修改为 Fleet,并且开始引入 Fleet Server。


Fleet Server是 Elastic Stack的一个组件集成,用于集中管理 Elastic Agent。它作为 Elastic Agent 的一部分在用作服务器的主机上启动。


一个 Fleet Server 进程可以支持多个 Elastic Agent 连接,并作为一个控制面来更新代理策略、收集状态信息和协调跨 Elastic Agent 的操作。


配置kibana启用fleet功能,

修改/etc/kibana/kibana.yml文件:

xpack.fleet.enabled: true //启用fleet,Fleet Server 是 Elastic Stack 的一个组件,用于集中管理Elastic Agentxpack.fleet.agents.tlsCheckDisabled: true //关闭fleet tls检测 可不设置这项

*左右滑动查看更多


另外kibana还需要添加的其他配置,创建检测规则:

xpack.security.encryptionKey:"32位字符" //需要配置才可以查看和创建检测规则xpack.encryptedSavedObjects.encryptionKey:"32位字符" //不知道干嘛的,猜测是为了重启之后维持状态的,不设置可能会重启失败
i18n.locale: "zh-CN" //配置kibana语言为中文

*左右滑动查看更多





2.2 添加使用

Endpoint Security

集成管理终端安全事件



2.2.1 添加Endpoint Security集成

添加Endpoint Security集成:
使用elastic账号登录kibana面板,在manaement选项栏里打开Fleet功能。在代理策略栏修改Fleet的默认策略,添加Endpoint Security集成,收集终端安全事件(注意:打开fleet需要联网下载更新策略集成):

Fleet的默认策略已经有了一个Fleet Server集成,现在添加Endpoint Security集成:


2.2.2 安装Endpoint Security集成策略的Elastic Agent


linux:

安装Endpoint Security集成策略的Elastic Agent:
点击fleet设置,设置elasticsearch主机。


使用Endpoint Security集成的策略,生成agent运行配:


生成密钥,下载elastic-agent.exe程序,在agent端执行agent程序,elastic-agent程序实际就是logstash和filebeat组合:


特别需要注意的是,需要先将的ca数字证书信任到机器上。

将agent程序安装在ubuntu siem机器,收集管理主机日志:

ca数字证书在elasticsearch-certutil程序生成文件中的ca目录中,将ca证书放到/usr/local/share/ca-certificates路径,执行命令sudo update-ca-certificates信任证书:


随后直接复制生成的agent配置命令执行上线:


windows:

将agent端安装在一台windows2012域控,收集管理主机日志:

先信任证书:

修改本地安全策略:
本地安全策略-安全设置-公钥策略-证书路径验证设置-勾选 允许用户信任的根 CA 用于验证证书/允许用户信任对等信任证书/第三方根CA和企业根CA-确定。


然后将ca证书安装到本地计算机-受信任的颁发机构。同样是先生成代理配置,随后复制生成的agent配置命令执行上线:

# --fleet-server-es-ca:用于与 Elasticsearch 通信的证书颁发机构的路径# --certificate-authoritie:用于与服务器验证通信的证书颁发机构的路径# --insecure:允许agent忽略ssl不安全提示# install:安装agent为服务.\elastic-agent.exe install --insecure `--fleet-server-es-ca=C:\\Users\Administrator\Desktop\ca.cer `--certificate-authorities=C:\\Users\Administrator\Desktop\ca.cer `--fleet-server-es=https://192.168.12.240:9200 `--fleet-server-service-token=AAEAAWVsYXN0aWMvZmxlZXQtc2VydmVyL3Rva2VuLTE2NDc5Mzk1NzMwODA6aFg5U0lEWGZUNkNrWjZVckFGOXRYQQ `--fleet-server-policy=499b5aa7-d214-5b5d-838b-3cd76469844e `--fleet-server-insecure-http

*左右滑动查看更多



卸载agent命令:



2.3 添加使用

zeek集成分析网络日志



Zeek 是一个开源网络监控框架,它可以收集网络中的流量并能够解析协议记录为json格式日志。通过filebeat+logstash便可以将日志发到siem平台进行日志的分析,编写可疑流量告警规则。此外,zeek本身也支持加载自定义的检测脚本。elastic siem平台自带了zeek的日志采集器,可以很方便的采集解析zeek产生的日志。

2.3.1 安装配置zeek服务

本例中将zeek服务安装在Elastic Stack服务的ubuntu机器上,然后将其他agent节点的流量通过配置路由规则转至ubuntu机器,从而模拟网关场景:

安装zeek服务:

源码下载编译安装:

# 安装依赖apt-get install cmake make gcc g++ flex bison libpcap-dev libssl-dev python3-dev swig zlib1g-dev
# 克隆项目编译安装git clone –recursive https://github.com/zeek/zeek./configure && make &&make instal

*左右滑动查看更多


添加软件源安装:

# 安装依赖apt-get install libpcap-dev libssl-dev zlib1g-dev python3 python3-dev cmake make gcc g++ flex swig bison libpcap-dev curl software-properties-common wget
# Ubuntu 20.04安装zeek服务echo 'deb http://download.opensuse.org/repositories/security:/zeek/xUbuntu_20.04/ /' | sudo tee /etc/apt/sources.list.d/security:zeek.listcurl -fsSL https://download.opensuse.org/repositories/security:zeek/xUbuntu_20.04/Release.key | gpg --dearmor | sudo tee /etc/apt/trusted.gpg.d/security_zeek.gpg > /dev/nullsudo apt updatesudo apt install zeek

*左右滑动查看更多


默认会安装在/opt/zeek/目录,还需要配置环境变量:

echo "export PATH=/usr/local/zeek/bin:$PATH" >> /etc/bash.bashrcsource /etc/bash.bashrc

*左右滑动查看更多


另外还需要安装zeek包管理器方便安装第三方插件:

pip3 install gitpythonpip3 install semantic-versionpip3 install git+http://github.com/zeek/package-manager@masterzkg autoconfig

*左右滑动查看更多


配置zeek服务监听对应网卡:

安装完成后,修改/opt/zeek/etc/node.cfg文件,监听对应网卡流量:


配置/opt/zeek/ztc/network.cfg文件,配置要监控的网段:


修改/opt/zeek/share/zeek/site/local.zeek文件,配置zeek输出json格式日志:

@load policy/tuning/json-logs.zeek@load packages

*左右滑动查看更多


加载配置,开始监听:

# 开始监听zeekctl deploy# 关闭zeekzeekctl stop


zeek的日志在/opt/zeek/log/目录,current目录是当天的日志流量。


2.3.2 安装zeek集成策略的Elastic Agent

Elastic安装zeek集成,解析zeek收集的网络日志。

1.安装zeek集成并配置fleet代理策略

新创建一条代理策略,添加fleet_server和zeek集成:


其中zeek集成的日志路径需要设置为上述zeek服务的日志路径。


2.安装zeek集成策略的Elastic Agent,需要安装至zeek服务的机器。

agent会提取zeek的流量日志发到elasticsearch数据库,kibana平台在对elasticsearch中的日志进行可视化展示,并适配kql规则分析,agent程序就是logstash和filebeat的集成程序。

生成zeek集成策略的agent运行配置,复制生成的配置命令执行上线。



3.其他主机通过设置路由规则将流量转发到zeek服务机器:

route -p add 192.168.12.0 MASK 255.255.255.0 192.168.2.240 METRIC 2

*左右滑动查看更多


完成后,在Elastic可以看到有网络日志数据:


在Analytics场景上对日志进行搜索:



三、使用Elastic Security Siem进行威胁检测


检测介绍:

本例中使用原子红队的测试用例模拟攻击,进行威胁检测分析。


先启用elastic Security的检测规则策略,官方默认提供了6百多个威胁检测规则:

模拟T1003.001攻击,dump LSASS进程中的凭证信息:


elastic Security告警面板检测到威胁:




自定义检测规则:

以nopac漏洞为例:


规则是检测kerberos协议,认证身份为DC域控机器用户,但源ip不是域控ip的请求。

(zeek.kerberos.client:"WIN-R7Q3V9723HF/qaq.cn" or zeek.kerberos.client:"administrator/QAQ.CN" ) and related.user: WIN-R7Q3V9723HF and not source.address : 192.168.12.250

*左右滑动查看更多


在日志中搜索:


新建规则检测NoPac攻击。


nopac告警。



—  往期回顾  —




关于安恒信息星火实验室安恒信息星火实验室专注于实战攻防与创新研究,主要方向包括实战演练、攻击模拟、威胁分析、漏洞挖掘等。团队成员均来自行业具备多年实战经验的攻防专家。本着以攻促防的核心理念,通过落地ATT&CK攻防全景知识库,实战化度量安全风险、赋能企业建设与运营。


关于安恒信息安全服务团队安恒信息安全服务团队由九维安全能力专家构成,其职责分别为:红队持续突破、橙队擅于赋能、黄队致力建设、绿队跟踪改进、青队快速处置、蓝队实时防御,紫队不断优化、暗队专注情报和研究、白队运营管理,以体系化的安全人才及技术为客户赋能。


您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存